MyBatis 版本:MyBatis 3.3.0
MyBatis 官方网站(英文):MyBatis 英文官网
MyBatis 官方网站(中文):MyBatis 中文官网
MyBatis 源码:MyBatis 源码
MyBatis 配置文件层次结构
1 | <?xml version="1.0" encoding="UTF-8"> |
Properties 元素
MyBatis 提供 3 种配置方式:
- property 子元素
1 | <properties> |
其中的属性就可以在整个配置文件中使用来替换需要动态配置的属性值。比如:1
2
3
4
5
6<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
这个例子中的 username 和 password 将会由 properties 元素中设置的相应值来替换。 driver 和 url 属性将会由 config.properties 文件中对应的值来替换。这样就为配置提供了诸多灵活选择。
- properties 配置文件
1 | <properties resource="org/mybatis/example/config.properties"> |
使用 Properties 文件方便日后维护和随时修改。
- 程序参数传递
1 | SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props); |
MyBatis 支持的 3 种配置方式可能同时出现,并且属性还会重复配置,故这三种配置方式将有一个设定的优先级:
- 如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
- 在 properties 元素体内指定的属性首先被读取。然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
不过实际操作中,推荐按如下方式使用:
- 不要使用混合的方式,这样会使得管理混乱
- 首选的方式使使用 properties 文件
- 如果需要对其进行加密或者其他加工可以使用方法参数传递属性